Laser scanning code symbol reading system employing programmable decode time-window filtering

ABSTRACT

A method and system for reading code symbols using a code symbol reading system having a programmable decode time-window filter mode of operation. During this mode of operation, only decoded code symbols that have been scanned within a selected (e.g. central) portion of the laser scan line field are processed according to a special decode time-window filtering function. In particular, if the decoded bar code symbol is a programming-type bar code symbol, then the system controller applies the function represented by the programming-type bar code symbol; and if the decoded bar code symbol is a non-programming-type bar code symbol, then the system controller either transmits symbol character data associated therewith to the host system or stores the symbol character data within memory aboard the bar code symbol reading system.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims the benefit of U.S. patent applicationSer. No. 13/897,634 for a Laser Scanning Code Symbol Reading SystemEmploying Programmable Decode Time Window Filtering filed May 20, 2013(and published Nov. 28, 2013 as U.S. Patent Application Publication No.2013/0313325), now U.S. Pat. No. 9,092,682, which claims the benefit ofU.S. Patent Application No. 61/741,780 for a Laser Scanning Code SymbolReading System Employing Programmable Decode Time Window Filtering,filed May 25, 2012. Each of the foregoing patent applications, patentpublication, and patent is hereby incorporated by reference in itsentirety.

FIELD OF DISCLOSURE

The present disclosure relates to an improved method of and apparatusfor laser scanning bar code symbols during bar code symbol readingoperations.

BACKGROUND

Under normal circumstances, a hand-held laser-based bar code symbolreader will scan and decode any bar code symbol it detects on a givenlaser scan line and transmit its symbol character data to the hostsystem or store the symbol character data within onboard memory. Thistype of system operation is often desired under certain circumstances,such as scanning menus or programming-type bar codes. However, itsometimes desirable to scan and decode bar code symbols with a greaterdegree of control that is not supported by conventional laser-scanningsystems, creating significant drawbacks in challenging scanningapplications.

Thus, there is a great need in the art for an improved hand-supportablelaser-scanning bar code symbol reader, that is capable of selectivelyreading code symbols with increased levels of end-user control, whileavoiding the shortcomings and drawbacks of prior art methods andapparatus.

SUMMARY

A primary object of the present disclosure is to provide an improvedmethod of and apparatus for laser scanning objects and reading bar codesymbols only within a limited portion of a laser scan line field so asto provide the end-user with increased levels of control duringhand-supported bar code symbol reading operations.

Another object is to provide a hand-supportable laser scanner employinga dynamically-programmable decode time-window filter and programmedprocessor that processes each line of scan data buffered in a scan databuffer during each scanning cycle to (i) decode any code symbolrepresented in the scan data and generate symbol character datarepresentative of a decoded code symbol, (ii) determine whether or notat least a portion of the line of scan data corresponding to a decodedcode symbol falls within the time duration of the decode time-windowfilter, and (iii) only transmit to its intended destination, symbolcharacter data associated with the decoded code symbol, when at least aportion of the line of scan data, associated with the decoded codesymbol, falls within the time duration of the decode time-window filter.

Another object is to provide a hand-supportable laser scanner with amode of decode time-window filter operation, wherein only decoded barcode symbols scanned within a pre-specified portion of the laser scanline field are processed according to a special decode time-windowfiltering function, namely: if the decode code symbol is aprogramming-type code symbol, then the system controller applies thefunction represented by the programming-type code symbol; and if thedecoded code symbol is a non-programming-type code symbol, then thesystem controller either transmits symbol character data associatedtherewith to the host system, or stores the symbol character data withinmemory aboard the bar code symbol reading system.

Another object is to provide such a hand-supportable laser scanner witha dynamically-programmed decode time-window filter that defines a timeduration, or percentage of the laser scan line field, based on thedistance or range of the scanned object from the laser scanner, duringwhich decoded code symbol data is permitted to pass onto the hostsystem, onboard memory or processor, and outside of which, the decodedcode symbol data is filtered out.

Another object is to provide such a hand-supportable laser scanner,wherein the mode of decode time-window filter operation can be selected,and activated, in a variety of different ways, including, but notlimited to: (i) upon generating an external signal (e.g. by depressing abutton on the scanning system); (ii) upon successfully reading aprogramming code or a bar code menu code; and/or (iii) upon programmingsystem configuration parameters (SCPs) which pre-determine thepercentage of the scan data line to be utilized for bar code symbolreading during the decode time-window filter mode of operation.

Another object is to provide a novel method of reading bar code symbolsusing a laser scanning bar code symbol reading system having a mode ofoperation which, when activated, automatically limits the reading ofscanned bar code symbols along a selected (e.g. center region portion)of a linear scan line field, and to ignore the scan data of bar codesymbols that have been scanned outside this selected center region ofthe scan line field.

Another object is to provide a novel a hand-supportable laser scanningbar code symbol reader that can automatically filter out, and nottransmit to the host system, symbol character data associated withdecoded lines of scan data that represent certain types of codes (e.g.programming codes or menu programming codes) to provide the end-userwith increased levels of control during hand-supported code symbolreading operations.

Another object is to provide a novel a laser scanning bar code symbolreader with advanced decode time-window filtering functions, wherein ifa code symbol is read outside the time duration of the time-windowfilter function a predetermined number of consecutive times, then,optionally, the filter will automatically (i) transmit the symbolcharacter data to a host system if the decoded code symbol is anon-programming-type code symbol, or (ii) program the system controlparameter function associated with the decoded code symbol if thedecoded code symbol is a programming-type code symbol.

Further objects of the present disclosure will become more apparentlyunderstood hereinafter and in the Claims appended hereto.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to more fully understand the Objects, the following DetailedDescription of the Illustrative Embodiments should be read inconjunction with the accompanying Drawings, wherein:

FIG. 1 is a perspective view of an illustrative embodiment of amanually-triggered hand-supportable laser scanning bar code symbolreading system, provided with a statically-programmed decode time-windowfilter which permits only decoded code symbol data within at least atportion of the decode time-window to pass onto the host system, whileall decoded code symbol data outside of the decode time window isfiltered out;

FIG. 2 is a schematic block diagram describing the major systemcomponents of the laser scanning bar code symbol reading systemillustrated in FIG. 1;

FIG. 3 is a schematic representation of the scan line data buffersupported within the decode processing module shown in FIG. 2, showingthe superposition of a statically-defined decode time-window function onthe scan line data buffered within the scan line data buffer;

FIG. 4 is a flow chart describing the primary steps carried out in thelaser scanning bar code symbol reading system of FIG. 1, wherein decodedsymbol character data is automatically filtered out, and not transmittedto the host system, or programmed within the scanning system, unless atleast a portion of the scan line data associated with a decoded bar codesymbol (e.g. a programming code or non-programming code) is locatedwithin the specified time duration of the decode time-window filteringfunction programmed within the system;

FIG. 5 is a perspective view of a second illustrative embodiment of anautomatically-triggered long/short-range hand-supportable laser scanningbar code symbol reading system, provided with a dynamically-programmeddecode time-window filter having a time duration based on the location(i.e. range) of the object in scanning field at any instant in time,wherein only decoded code symbol data, having at least a portion of itsscan line data located within the time duration of the decodetime-window, is transmitted onto the host system (or programmed withinthe scanning system, as the case may be), while all decoded code symboldata outside of the decode time-window is filtered out and nottransmitted to the host system, stored in memory onboard the system, orprogrammed within the system control parameters stored in the system;

FIG. 6 is a schematic block diagram describing the major systemcomponents of the automatically-triggered long/short-range laserscanning bar code symbol reading system illustrated in FIG. 5;

FIG. 7A is a schematic representation of the scan line data buffersupported within the decode processing module shown in FIG. 5, showingthe superposition of a first (relatively-narrow) decode time-windowfunction dynamically-programmed and superimposed on the scan line databuffered within the scan line data buffer, when the bar-coded object tobe scanned is located at a first (e.g. far-field) range from thescanning window;

FIG. 7B is a schematic representation of the scan line data buffersupported within the decode processing module shown in FIG. 5, showingthe superposition of a second (relatively wide) decode time-windowfunction dynamically-programmed and superimposed on the scan line databuffered within the scan line data buffer, when the bar-coded object tobe scanned is located at a second (e.g. near-field) range from thescanning window;

FIG. 8 is a flow chart describing the primary steps carried out in theautomatically-triggered laser scanning bar code symbol reading system ofFIG. 5;

FIG. 9 is a perspective view of a third illustrative embodiment of amanually triggered long/short-range hand-supportable laser scanning barcode symbol reading system, provided with a dynamically-programmeddecode time-window filter having a time duration based on the location(i.e. range) of the object in scanning field at any instant in time,wherein (i) a decoded code symbol data having at least a portion of itsscan line data located within the time duration of the decodetime-window, and/or (ii) a decoded symbol outside of the time window isconsecutively read a pre-specified number of times, are transmitted tothe host system (or programmed within the scanning system, as the casemay be);

FIG. 10 is a schematic block diagram describing the major systemcomponents of the manually-triggered laser scanning bar code symbolreading system illustrated in FIG. 9;

FIG. 11A is a schematic representation of the scan line data buffersupported within the decode processing module shown in FIG. 10, showingthe superposition of a first (relatively-narrow) decode time-windowfunction dynamically-programmed and superimposed on the scan line databuffered within the scan line data buffer, when the bar-coded object tobe scanned is located at a first (e.g. far-field) range from thescanning window;

FIG. 11B is a schematic representation of the scan line data buffersupported within the decode processing module shown in FIG. 10, showingthe superposition of a second (relatively wide) decode time-windowfunction dynamically-programmed and superimposed on the scan line databuffered within the scan line data buffer, when the bar-coded object tobe scanned is located at a second (e.g. near-field) range from thescanning window; and

FIGS. 12A and 12B set forth a flow chart describing the primary stepscarried out in the manually-triggered laser scanning bar code symbolreading system of FIG. 9.

DETAILED DESCRIPTION

Referring to the figures in the accompanying Drawings, the illustrativeembodiments of the dual laser-scanning bar code symbol reading systemand method will be described in great detail, wherein like elements willbe indicated using like reference numerals.

In general, the present disclosure sets forth two illustrativeembodiments of a hand-supportable laser scanner having a novel decodetime-window filtering mode of operation. During this mode of operation,only decoded bar code symbols scanned within a central portion of thelaser scan line field are processed according to a special decodetime-window filtering function, namely: if the decode code symbol is aprogramming-type code symbol, then the system controller applies thefunction represented by the programming-type code symbol; and if thedecoded code symbol is a non-programming-type code symbol, then thesystem controller either transmits symbol character data associatedtherewith to the host system, or stores the symbol character data withinmemory aboard the bar code symbol reading system.

As will be described below, this mode of operation can be selected, andactivated, in a variety of different ways, including, but not limitedto: (i) upon generating an external signal (e.g. by depressing a buttonon the scanning system); (ii) upon successfully reading a programmingcode or a bar code menu code; and/or (iii) upon programming appropriatesystem configuration parameters (SCPs) which program the percentage ofthe scan line field (i.e. scan line data buffer) to be utilized for barcode symbol reading during the decode time-window filtering mode ofoperation.

Manually-Triggered Hand-Supportable Laser Scanning Code Symbol ReadingSystem Employing a Statically-Programmed Decode Time-Window FilteringMechanism within the Decode Processor

Referring now to FIGS. 1 through 4, a first illustrative embodiment of amanually-triggered hand-supportable laser scanning bar code symbolreading system 1 will be described in detail.

As shown in FIGS. 1 and 2, the manually-triggered laser scanning barcode symbol reader 100 comprises: a hand-supportable housing 102 havinga head portion and a handle portion supporting the head portion; a lighttransmission window 103 integrated with the head portion of the housing102; a manually-actuated trigger switch 104 integrated with the handleportion of the housing, for generating a trigger event signal toactivate laser scanning module 105 with laser scanning field 115; alaser scanning module 105, for repeatedly scanning, across the laserscanning field, a visible laser beam generated by a laser source 112(e.g. VLD or IR LD) having optics to produce a laser scanning beamfocused in the laser scanning field, in response to control signalsgenerated by a system controller 150; wherein the laser scanning module105 also includes a laser drive circuit 151 for receiving controlsignals from system controller 150, and in response thereto, generatingand delivering laser (diode) drive current signals to the laser source112A; a start of scan/end of scan (SOS/EOS) detector 109, for generatingtiming signals indicating the start of laser beam sweep, and the end ofeach laser beam sweep, and sending these SOS/EOS timing signals to thesystem controller 150, as well as decode processor 108; light collectionoptics 106 for collecting light reflected/scattered from scanned objectin the scanning field, and a photo-detector for detecting the intensityof collected light and generating an analog scan data signalcorresponding to said detected light intensity during scanningoperations; an analog scan data signal processor/digitizer 107 forprocessing the analog scan data signals and converting the processedanalog scan data signals into digital scan data signals, which are thenconverted into digital words representative of the relative width of thebars and spaces in the scanned code symbol structure; a set of scan linedata line buffers 160 for buffering each complete line of scan datacollected during a complete sweep of the laser scanning beam across thelaser scanning field during each scanning cycle (i.e. for both scanningdirections); programmed decode processor 108 for decode processingdigitized data stored in said scan line data buffer 160, and generatingsymbol character data representative of each bar code symbol scanned bythe laser scanning beam; a manually-actuatable switch 410, andassociated LED indicator light, for activating, and deactivating, thedecode time-window filtering mode of the system; an input/output (I/O)communication interface module 140 for interfacing with a hostcommunication system 154 and transmitting symbol character data theretovia wired or wireless communication links 155 that are supported by thesymbol reader and host system 154; and a system controller 150 forgenerating the necessary control signals for controlling operationswithin the hand-supportable laser scanning bar code symbol readingsystem.

As shown in FIG. 2, the laser scanning module 105 comprises a number ofsubcomponents, namely: laser scanning assembly 110 with anelectromagnetic coil 128 and rotatable scanning element (e.g. mirror)134 supporting a lightweight reflective element (e.g. mirror) 134A; acoil drive circuit 111 for generating an electrical drive signal todrive the electromagnetic coil 128 in the laser scanning assembly 110;and a laser beam source 112A for producing a visible laser beam 113A;and a beam deflecting mirror 114 for deflecting the laser beam 113A asincident beam 114A towards the mirror component of the laser scanningassembly 110, which sweeps the deflected laser beam 114B across thelaser scanning field and a bar code symbol 16 that might besimultaneously present therein during system operation.

As shown in FIG. 2, the laser scanning module 105 is typically mountedon an optical bench, printed circuit (PC) board or other surface wherethe laser scanning assembly is also, and includes a coil support portion110 for supporting the electromagnetic coil 128 (in the vicinity of thepermanent magnet 135) and which is driven by a scanner drive circuit 111so that it generates magnetic forces on opposite poles of the permanentmagnet 135, during scanning assembly operation. Assuming the propertiesof the permanent magnet 135 are substantially constant, as well as thedistance between the permanent magnet 135 and the electromagnetic coil128, the force exerted on the permanent magnet 135 and its associatedscanning element is a function of the electrical drive current suppliedto the electromagnetic coil 128 during scanning operations. In general,the greater the level of drive current produced by scanner drive circuit111, the greater the forces exerted on permanent magnet 135 and itsassociated scanning element, and in turn, the greater the resultant scansweep angle α(t), and thus scan line length produced by the laserscanning beam. Thus, scan sweep angle α(t) of the scanning module 105can be directly controlled by controlling the level of drive currentsupplied to the coil 128 by the scanner drive circuit 111. This will bethe preferred method of controlling the scan sweep angle α(t) and scanline length in the present disclosure.

In general, system 100 supports a manually-triggered triggered mode ofoperation, and the bar code symbol reading method described below. Forpurposes of illustration, it is assumed that mode switch 410 isactivated so that the decode time-window filtering mode is enabled intooperation.

In response to the generation of a triggering event signal (i.e. bymanually pulling trigger 104), the laser scanning module 105 generatesand projects a laser scanning beam through the light transmission window103, and across the laser scanning field external to thehand-supportable housing, for scanning an object in the scanning field.The laser scanning beam is generated by the laser beam source 112A inresponse control signals generated by the system controller 150. Thescanning element (i.e. mechanism) 134 repeatedly scans the selectedlaser beam across a code symbol residing on an object in the laserscanning field 115, at the scan sweep angle set by the controller 150for the current scanning cycle, determined by the process described inFIG. 3. Then, the light collection optics 106 collects lightreflected/scattered from scanned code symbols on the object in thescanning field, and the photo-detector (106) automatically detects theintensity of collected light (i.e. photonic energy) and generates ananalog scan data signal corresponding to the light intensity detectedduring scanning operations. The analog scan data signalprocessor/digitizer 107 processes the analog scan data signals andconverts the processed analog scan data signals into digitized datasignals. The programmed decode processor 108 decode processes digitizeddata signals and generates symbol character data representative of eachbar code symbol scanned by the laser scanning beam. The decoded bar codesymbol could be a programming-type or menu-type bar code symbol or anordinary data-encoded bar code symbol not intended to perform orinitiate any programming or special operations within the bar codesymbol scanner.

As will be described in greater detail hereinafter, at this stage of theprocess, the decode time-window filtering function programmed within thesystem operates to filter out decoded symbol character data that has notbeen collected within at least a portion of the specified decodetime-window T_(dtw), as illustrated in FIG. 3. In this firstillustrative embodiment, the decode time-window filtering function isstatically programmed, and can be specified as a percentage (e.g. 45%)of the time duration of a single scan data line field, and can bedefined about the center of the scan data line field, or from its leftend or its right end, as the application requires. Typically, inhand-held scanning applications, the decode time-window filter functionwill be defined about the center of the scan data line field, whereas infix-mount scanning applications, it might be more advantageous to definethe decode time-window filter function about the left or right end ofthe scan data line field.

The duration of each scan data line field can be determined from thescan rate (i.e. cycles/second) of the laser beam employed in the system.For example, if the scan rate is 100 cycles per second, then it takesthe laser beam 1/100 second (i.e. 0.01 seconds), to complete a singlescanning cycle (i.e. complete a single back and forth motion). Thus, thelength of a single scan line is ½ of the complete time for a completescanning cycle (i.e. ½×0.01 [seconds/scanline]=0.005 [seconds/scanline]or 500 [milliseconds/scanline]. This parameter is stored in onboardmemory, and is accessible by decode processor 108 during bar code symbolreading operations. In the first illustrative embodiment, the timeduration of the decode time-window filter function, T_(dtw), can beselected as x % of the scan line field time duration (i.e. scan linedata buffer 160), centered about the center line passing through thecenter of the scan line field (i.e. scan line data buffer). In FIG. 3, xis chosen to be about 45% of the scan line field time duration, butcould be selected to be larger or smaller, depending on the application.

As shown in FIG. 2, the decode processor 108 includes astatically-programmed decode time-window filter module 108A. Thestatically-programmed decode time-window filter module 108A employs scandata line buffer 160 to implement a decode time-window filter functionhaving a time duration that is sufficient to provide a decodetime-window filter function for use over the entire working range of thesystem. Preferably, this decode time-window filter 108A is triggeredwhenever a portion of the scan data associated with a decoded codesymbol falls within the time domain (i.e. duration) of the decodetime-window filter 108A, T_(dtw) actively set within the system. Whentriggered, the decode time-window filter function transmits, to itsdestination (e.g. host system, onboard memory storage, or execution),decoded symbol character data (e.g. representative of a non-programmingor programming-type bar code symbol). Thus, so long as a portion orpiece of the scan data string associated with a decoded bar code symbolhas time-coordinates that fall within, for example, the time duration ofthe decode time-window filter function T_(dtw), defined, for example,about the center of a scan line field, then the decoded symbol characterdata (e.g. representative of a non-programming or programming-type barcode symbol) is transmitted to its destination (e.g. host system,onboard memory storage, or execution).

Symbol character data corresponding to the bar codes read (i.e. decoded)by the programmed decoder 108 is then transmitted to the host system 154via the I/O communication interface 140, which may support either awired and/or wireless communication link 155, well known in the art.During object detection and laser scanning operations, the systemcontroller 150 generates the necessary control signals for controllingoperations within the hand-supportable laser scanning bar code symbolreading system.

Referring to FIG. 4, the method of reading bar code symbols andcontrolling operations within the laser scanning bar code reader 100will be described in greater detail. Again, it is assumed that modeswitch 410 is activated so that the decode time-window filtering mode isenabled into operation.

As indicated in FIG. 4, the process orchestrated by system controller150 begins at the START Block, where all system components are activatedexcept for the laser and scanning motor (i.e. electromagnetic coil).Then at Block B in FIG. 3A, the system controller determines if atrigger or activation event has occurred (i.e. trigger switch 104 hasbeen manually depressed by the operator).

In the event that a trigger event has been detected at Block B, then thesystem controller proceeds to Block C and (i) activates the laser diodeand scanner drive circuit 111 with a sufficient current to generate afull default scan sweep angle α_(o)(t), (ii) sets the decode time-windowduration T_(dtw), and (iii) then starts timeout period timer T1.

As indicated at Block D, the system controller commands the buffering,in a scan data buffer 160, of a complete line of scan data collected forscanning directions, over a full scan sweep angle set during the currentscanning cycle. Scan data from each scan direction is buffered in adifferent scan line data buffer.

At Block E, the system controller determines whether the decodeprocessor 108 has decoded a bar code symbol based on the line of scancollected and buffered in the scan data buffer 160.

If, at Block E, a bar code symbol has not been decoded (i.e. read)within the buffered line of scan data, then the system controllerproceeds to Block F and determines whether or not the time out period T1has been reached. If the time out period has not been reached, then thesystem controller returns to Block D and attempts to decode the scandata within time period T1 remaining. If the time out period has beenreached, then the system controller proceeds to Block G, de-activatesthe laser source and scan motor, and then returns to Block B, as shown.

If at Block E in FIG. 4, the system controller determines that a barcode has been decoded, then at Block H the system controller determinesif at least a portion of a decoded bar code symbol is detected withinthe decode time-window T_(dtw) set at Block C, that is, is representedby scan data collected within the decode time-window T_(dtw) set atBlock C. If at least a portion of a decoded bar code symbol is notdetected within scan data collected within the set decode time-windowT_(dtw), then at Block I the system controller determines whether or notthe time out period has lapsed. If the time out period has lapsed, thenthe system controller returns to Block B. If the time out period has notlapsed, then the system controller returns to Block D, as shown.

If at Block H the system controller determines that at least a portionof a decoded bar code is detected within the scan data collected withinthe decode time-window set at Block C, then the system controllerproceeds to Block J to determine if the decoded bar code symbol is (i) aprogramming-type bar code symbol (including menu-reading bar codesymbol), or (ii) a non-programming bar code symbol. If the decoded barcode symbol is a programming-type bar code symbol, then at Block K, theprogramming-type bar code symbol is programmed within the system, andthen the system controller returns to Block B, as shown; and if thedecoded bar code symbol is a non-programming-type bar code symbol, thenat Block L, the bar code symbol character data is transmitted to thehost system, and then the system controller returns to Block B, asshown.

By virtue of the novel control process described in FIG. 4, themanually-triggered laser scanning bar code symbol reader has thecapacity to intelligently filter out decoded bar code symbols that arescanned outside the statically-programmed decode time-window T_(dtw), toprovide the end-user a greater detail of control during laser scanningoperations. As long as at least a portion of the decoded code symbolfalls within the decode time window (i.e. time duration of the decodetime-window filter), the filtering mechanism in the decode processorwill be able operate at very close up distances to the scanning window,as well as at the extreme portions of the working distance of thescanning system.

Automatically-Triggered Hand-Supportable Laser Scanning Bar Code SymbolReading System Employing a Dynamically-Programmed Decode Time-WindowFiltering Mechanism within the Decode Processor

Referring to FIGS. 5 through 8, a second illustrative embodiment of anautomatically-triggered hand-supportable laser scanning bar code symbolreading system 500 will be described in detail.

As shown in FIGS. 5 and 6, the automatically-triggered laser scanningbar code symbol reader 500 comprises: a hand-supportable housing 102having a head portion and a handle portion supporting the head portion;a light transmission window 103 integrated with the head portion of thehousing 102; an IR or LED based object presence and range detectionsubsystem 225 disposed in the head portion of the housing, forgenerating an IR or LED beam within the laser scanning field, as shownin FIG. 5, for automatically detecting whether or not an object ispresent in the long-range (i.e. far-field) or short-range (i.e.near-field) portion of the laser scanning field, and if so, thenautomatically activating (i.e. triggering) the system including laserscanning module 105 to carrying out laser scan data capture andprocessing operations, in one or more of the detected regions of thescan field in which the object has been detected; a laser scanningmodule 105, for repeatedly scanning, across the laser scanning field, avisible laser beam generated by a laser source 112A (e.g. VLD or IR LD)having optics to produce a laser scanning beam focused in the laserscanning field, in response to a control signal generated by a systemcontroller 150; wherein the laser scanning module 105 also includes alaser drive circuit 151 for receiving control signals from systemcontroller 150, and in response thereto, generating and delivering laser(diode) drive current signals to the laser source 112A to produce alaser scanning beam during the method of bar code symbol readingdescribed in FIG. 6; a start of scan/end of scan (SOS/EOS) detector 109,for generating timing signals indicating the start of laser beam sweep,and the end of each laser beam sweep, and sending these SOS/EOS timingsignals to the system controller 150; light collection optics 106 forcollecting light reflected/scattered from scanned object in the scanningfield, and a photo-detector for detecting the intensity of collectedlight and generating an analog scan data signal corresponding to saiddetected light intensity during scanning operations; an analog scan datasignal processor/digitizer 107 for processing the analog scan datasignals and converting the processed analog scan data signals intodigital scan data signals, which are then converted into digital wordsrepresentative of the relative width of the bars and spaces in thescanned code symbol structure and transmitted to decode processor 108via lines 142; a scan data signal intensity detection module 143,preferably implemented within scan data processor/digitizer 107, forcontinuously (i) processing the return analog (or digital) scan datasignals, (ii) detecting and analyzing the intensity (i.e. magnitude) ofthe laser return signal, (iii) determining (e.g. estimating) the rangeor distance of the scanned object, relative to the scanning window, andthen (iv) transmitting the range indication (i.e. estimation) signal(e.g. in the form of a digital data value) to the decode processor 108so that it can program or set an appropriate time duration for thedecode time-window filter function employed therewithin, as described ingreater detail hereinafter; a set of scan line data buffers 160 forbuffering each complete line of scan data collected during a completesweep of the laser scanning beam across the laser scanning field duringeach scanning cycle (e.g. two scan data line buffers for buffering datacollected during scanning directions); programmed decode processor 108for decode processing digitized data stored in scan data buffer 160, andgenerating symbol character data representative of each bar code symbolscanned by the visible laser scanning beam; a manually-actuatable switch410, and associated LED indicator light, for activating, anddeactivating, the decode time-window filtering mode of the system; aninput/output (I/O) communication interface module 140 for interfacingwith a host communication system 154 and transmitting symbol characterdata thereto via wired or wireless communication links 155 that aresupported by the symbol reader and host system 154; and a systemcontroller 150 for generating the necessary control signals forcontrolling operations within the hand-supportable laser scanning barcode symbol reading system.

Preferably, IR-based object presence and range detection subsystem 225is mounted in the front of its light transmission window so that the IR(or LED) light transmitter and IR (or LED) light receiver of subsystem225 have an unobstructed view of an object within the laser scanningfield of the system. Also, IR (or LED) object presence detection module225 can transmit IR (or LED) signals having a continuous low-intensityoutput level, or having pulsed higher-intensity output level which maybe used under some conditions to increase the object detection range ofthe system. In alternative embodiments, the IR light transmitter and IRlight receiver components can be realized as visible light (e.g. redlight) transmitter and visible light (e.g. red light) receivercomponents, respectively, implemented using LED technology, well knownin the art. Typically the object detecting light beam will be modulatedand synchronously detected, as taught in U.S. Pat. No. 5,340,971,incorporated herein by reference.

As shown in FIG. 5, the laser scanning module 105 comprises a number ofsubcomponents, namely: laser scanning assembly 110 with anelectromagnetic coil 128 and rotatable or oscillating scanning element134 supporting a lightweight reflective element; a scanner coil drivecircuit 111 for generating an electrical drive signal to drive theelectromagnetic coil 128 in the laser scanning assembly 110; and a laserbeam source 112A for producing a visible laser beam 113A; and a beamdeflecting mirror 114 for deflecting the laser beam 113A from laser beamsource 112A, towards the mirror component 134A of the laser scanningassembly 110, which sweeps the laser beam 114B across the scan field andone or more bar code symbols 16 that might be simultaneously presenttherein during system operation.

As shown in FIG. 5, the laser scanning module 105 is typically mountedon an optical bench, printed circuit (PC) board or other surface wherethe laser scanning assembly is also, and includes a coil support portion110 for supporting the electromagnetic coil 128 (in the vicinity of thepermanent magnet 135) and which is driven by a scanner drive circuit 111so that it generates magnetic forces on opposite poles of the permanentmagnet 135, causing mirror component 134 to oscillate about its axis ofrotation, during scanning assembly operation. Assuming the properties ofthe permanent magnet 135 are substantially constant, as well as thedistance between the permanent magnet 135 and the electromagnetic coil128, the force exerted on the permanent magnet 135 and its associatedscanning element is a function of the electrical drive current suppliedto the electromagnetic coil 128 during scanning operations. In general,the greater the level of drive current produced by scanner drive circuit111, the greater the forces exerted on permanent magnet 135 and itsassociated scanning element, and in turn, the greater the resultant scansweep angle α(t), and thus scan line length produced by the laserscanning beam. Thus, scan sweep angle α(t) of the scanning module 105can be directly controlled by controlling the level of drive currentsupplied to the coil 128 by the scanner drive circuit 111. This will bethe preferred method of controlling the scan sweep angle α(t) and scanline length in the present disclosure.

Preferably, the intensity detection module 143 is implemented withinscan data processor/digitizer 107 which may be realized as an ASIC chip,supporting both analog and digital type circuits that carry out thefunctions and operations performed therein. As shown in FIG. 6, thedecode processor 108 includes a dynamically-programmed decodetime-window filter module 108B. The dynamically-programmable decodetime-window filter module 108B employs scan data line buffer 160 toimplement a decode time-window filter function having a continuouslyprogrammable time duration. At any instant in time, the continuouslyprogrammable time duration is determined, within decode processor 108,by the range of the scanned object determined using the range datagenerated by analog scan data processor/digitizer 107, over data path142, shown in FIG. 6.

The function of the intensity detection module 143 is manifold: (i)constantly process the return analog (or digital) scan data signals anddetecting and analyzing the intensity (i.e. magnitude) of the laserreturn signal; (ii) determine (e.g. estimate) the range or distance ofthe scanned object, relative to the scanning window, during eachmeasuring period; and (iii) transmit a range/distance indication signal(e.g. in the form of digital data value) to the decode processor 108 forsetting an appropriate time duration for the decode time-window filterfunction 108B employed therewithin. Preferably, the range or distance ofthe scanned object can be determined (e.g. estimated), relative to thescanning window, during each measuring period, by making a relativesignal-to-noise (SNR) measurement, where the lowest SNR valuecorresponds to the farthest possible scanning distance in the workingrange of the system (relative to the scanning window), and the highestSNR value corresponds to the shortest possible scanning distance in theworking range of the system. Notably, module 143 may include tablesstoring pre-calibrated scanning range vs. SNR values which can be usedin such range/distance determinations.

In general, system 500 supports an automatically-triggered mode ofoperation, and a bar code symbol reading method described below. Again,it is assumed that mode switch 410 is activated so that the decodetime-window filtering mode is enabled into operation.

In response to the automatic detection of an object in the laserscanning field 115, by IR or LED based object presence detectionsubsystem 225, the laser scanning module 105 generates and projects alaser scanning beam through the light transmission window 103, andacross the laser scanning field 115 external to the hand-supportablehousing, for scanning an object in the scanning field. The laserscanning beam is generated by the laser source 112B in response controlsignals generated by the system controller 150. The scanning element(i.e. mechanism) 134 repeatedly scans the laser beam across the objectin the laser scanning field, at the scan sweep angle set by thecontroller 150 for the current scanning cycle, determined by the processdescribed in FIG. 3. Then, the light collection optics 106 collectslight reflected/scattered from scanned code symbols on the object in thescanning field, and the photo-detector (106) automatically detects theintensity of collected light (i.e. photonic energy) and generates ananalog scan data signal corresponding to the light intensity detectedduring scanning operations. The analog scan data signalprocessor/digitizer 107 processes the analog scan data signals andconverts the processed analog scan data signals into digitized datasignals. Also, within the analog scan data signal processor/digitizer107, the intensity detection module 143 performs the followingfunctions: (i) constantly processes the return analog (or digital) scandata signals; (ii) detects and analyzes the intensity (i.e. magnitude)of the laser return signal; (ii) determines (e.g. estimates) the rangeor distance of the scanned object, relative to the scanning window,during each measuring period; and (iv) transmits a range/distanceindication signal (e.g. in the form of digital data values) to thedecode processor 108 for setting an appropriate time duration for thedecode time-window filter function. The programmed decode processor 108decode processes digitized data signals, and generates symbol characterdata representative of each bar code symbol scanned by the laserscanning beam. The decoded bar code symbol could be a programming-typeor menu-type bar code symbol, or an ordinary data-encoded bar codesymbol not intended to perform or initiate any programming or specialoperations within the bar code symbol scanner.

As will be described in greater detail hereinafter, at this stage of theprocess, the dynamically-programmed decode time-window filtering 108Boperates to filter out decoded symbol character data that has not beencollected from within the specified decode time-window function. In thisillustrative embodiment, the decode time-window filtering functionT_(dtw) is dynamically programmed using the range/distance dataestimated for the scanned object, and typically based on a percentage(e.g. 45%) of the time duration of a single scan data line field. Theduration of each scan data line field can be easily determined from thescan rate of the laser beam employed in the system. For example if thescan rate is 100 cycles per second, then it takes the laser beam 1/100second (i.e. 0.01 seconds), to complete a single scanning cycle (i.e.complete a single back and forth motion). Thus, the length of a singlescan line is ½ of the complete time for a complete scanning cycle (i.e.½×0.01 [seconds/scanline]=0.005 [seconds/scanline] or 500[milliseconds/scanline]. This parameter is stored in memory and isaccessible within the decode processor 108 during bar code symbolreading operations.

In FIG. 7A a first (relatively-narrow) decode time-window functionT_(dtw) (T1, range) is dynamically-programmed and superimposed on thescan line data buffered 160 within the scan line data buffer, when thebar-coded object to be scanned is located at a first (e.g. far-field)range from the scanning window. The time duration of a first (e.g.“far-field”) decode time-window filter function, T_(dtw) (T1, range) canbe selected as a first % of the scan line field (i.e. scan line databuffer 160), centered about the center line passing through the centerof the scan line field (i.e. scan line data buffer). It is understoodthat the laser beam moving across an object in the far-field region ofthe scan field has a significantly higher speed than objects moving inthe near-field portion of the scan field. In FIG. 7A, x is chosen to beabout 25% of the scan line field, but could be selected to be larger orsmaller, depending on the application. This first decode time-windowfilter T_(dtw) (T2, range) will be selected when an object is detectedwithin the far-field (i.e. long range) portion of the laser scan field.

In FIG. 7B, a second (relatively-wide) decode time-window functionT_(dtw) (T2, range) is dynamically-programmed and superimposed on thescan line data buffered 160 within the scan line data buffer, when thebar-coded object to be scanned is located at a second (e.g. near-field)range from the scanning window. The time duration of a second (e.g.“near-field”) decode time-window filter function, T_(dtw) (T2, range)determined at time T2 can be selected as second % of the scan line field(i.e. scan line data buffer 160), centered about the center line passingthrough the center of the scan line field (i.e. scan line data buffer).

As indicated above, the time duration of the dynamically-programmeddecode time-window filter module 108B is determined by the range of thescanned object in the scan field, at any given moment in time. The rangemeasure or estimate can be determined in at least two different ways:(i) by processing collected returned laser scan signals; or (ii) usingrange data produced by an LED or IR based object detection/rangedetection mechanism. In the case of processing return laser scanningsignals, the laser light signal is converted to an electrical signalwhich is fed into the analog scan data signal processor/digitizer 107.The strength of the processed analog or digital scan data signal, or thesignal-to-noise ratio (SNR), is calculated and then used to estimate thedistance/range of a scanned bar code symbol by the processor 107 whichcan be implemented by an ASIC chip. A strong signal or a high ratiousually corresponds to a shorter range/distance, whereas a weak signalor low ratio corresponds to a larger range/distance. The length (i.e.size) of the time duration of the decode time-window filter 108B canthen be dynamically adjusted based on the signal strength or SNR, and apredetermined table/algorithm implemented in ASIC 107. Below is anexemplary table that is provided to illustrate the relationship amongthese three parameters, described above. The parameters can be tailoredfor scanners having different working ranges.

Signal strength or SNR Distance/Range Size of Decode Time- determined asa % of the between Scanner Window Selected predetermined Maximum and ascanned as a % of the strength or SNR value bar code symbol full Laserscan line 95% 2 inch 100% . . . . . . . . . 50% 1 foot  30% . . . . . .. . . 10% 2 feet  10%

Notably, the dynamically-defined decode time-window filter 108B can betriggered under conditions which may differ during different scanningapplications. In the second illustrative embodiment, preferably, thedecode time-window filter function is triggered (i.e. activated) totransmit to its destination (e.g. host system, onboard memory storage,or execution) decoded symbol character data (e.g. representative of anon-programming or programming-type bar code symbol) whenever at least aportion of the scan data associated with the decoded code symbol fallswithin the decode time-window filter duration T_(dtw) actively setwithin the system, at any moment or instant in time. As time duration ofthe decode time-window filter 108 is a function of object scanningrange, which can vary at any instant in time, it is understood that theduration of the dynamically-programmed decode time-window filterfunction will also change over time, and be dependent on the objectrange/distance determined by the analog scan data processor/digitizer107, as described above. This way, so long as a portion or piece of thescan data string associated with a decoded bar code symbol hastime-coordinates that fall within, for example, the time duration of thedecode time-window filter function T_(dtw) (time, range), defined, forexample, about the center of a scan line field, then the decoded symbolcharacter data (e.g. representative of a non-programming orprogramming-type bar code symbol) is transmitted to its destination(e.g. host system, onboard memory storage, or execution).

Symbol character data, corresponding to the bar codes read (i.e.decoded) by the decoder 108, is then transmitted to the host system 154via the I/O communication interface 140, which may support either awired and/or wireless communication link 155, well known in the art.During object detection and laser scanning operations, the systemcontroller 150 generates the necessary control signals for controllingoperations within the hand-supportable laser scanning bar code symbolreading system.

Referring to FIG. 8, the method of reading bar code symbols andcontrolling operations within the laser scanning bar code reader 500will be described in greater detail.

As indicated in FIG. 8, the process orchestrated by system controller150 begins at the START Block, where all system components are activatedexcept for the laser and scanning motor (i.e. electromagnetic coil).Then at Block B in FIG. 8, the system controller determines if a triggeror activation event has occurred (i.e. trigger switch 104 has beenmanually depressed by the operator).

In the event that a trigger event has been detected at Block B, then thesystem controller proceeds to Block C1, and (i) activates the laserdiode and scanner drive circuit 111 with a sufficient current togenerate a full default scan sweep angle α_(o)(t) and (ii) then startstimeout period timer T1.

At Block C2, the analog scan data signal processor/digitizer ASIC 107processes the return analog and/or digital scan data signals, andautomatically (i) measures (e.g. estimates) the range or distancebetween the scanned object and the scanner, (ii) determines the timeduration for the decode time-window filter as a function of determinedobject range/distance, and (iii) programs the time duration for thedecode time-window filter, for the given moment of time during thecontrol process.

As indicated at Block D, the system controller commands the buffering,in a scan data buffer 160, of a complete line of scan data collected forscanning directions, over a full scan sweep angle set during the currentscanning cycle. Scan data from each scan direction is buffered in adifferent scan line data buffer.

At Block E, the system controller determines whether the decodeprocessor 108 has decoded a bar code symbol based on the line of scancollected and buffered in the scan data buffer 160.

If, at Block E, a bar code symbol has not been decoded (i.e. read)within the buffered line of scan data, then the system controllerproceeds to Block F and determines whether or not the time out period T1has been reached. If the time out period has not been reached, then thesystem controller returns to Block C2, processes the scan data signals,determines the object range and updates the time duration of the decodetime-window filter. Thereafter, the system controller proceeds to BlockD and attempts to collect and decode scan data within time period T1remaining. If the time out period has been reached, then the systemcontroller proceeds to Block G, de-activates the laser source and scanmotor, and then returns to Block B, as shown.

If at Block E, the system controller determines that a full bar code hasbeen decoded, then at Block H the system controller determines if a barcode symbol is detected within the decode time-window set at Block C2,that is, is represented by scan data collected within the decodetime-window set at Block D. If at least a portion of a decoded bar codesymbol is not detected within scan data collected within the set decodetime-window T_(dtw) set at Block C2, then at Block I the systemcontroller determines whether or not the time out period has lapsed. Ifthe time out period has lapsed, then the system controller returns toBlock B. If the time out period has not lapsed, then the systemcontroller returns to Block D, as shown.

If at Block H the system controller determines that a bar code isdetected within the scan data collected within the decode time-windowset at Block C2, then the system controller proceeds to Block J anddecodes the bar code symbol based on the scan data within the decodetime-window, and then proceeds to Block K to determine if the decodedbar code symbol is (i) a programming-type bar code symbol (includingmenu-reading bar code symbol), or (ii) a non-programming bar codesymbol. If the decoded bar code symbol is a programming-type bar codesymbol, then at Block L, the programming-type bar code symbol isprogrammed within the system, and then returns to Block B, as shown; andif the decoded bar code symbol is a non-programming-type bar codesymbol, then at Block M, the bar code symbol character data istransmitted to the host system and then returns to Block B, as shown.

By virtue of the novel control process described in FIG. 8, the bar codesymbol reader has the capacity to intelligently filter out bar codesymbols that are scanned outside the dynamically-programmed decodetime-windows (for different ranges/distance along the working range ofthe system).

Manually-Triggered Hand-Supportable Laser Scanning Bar Code SymbolReading System Employing a Dynamically-Programmed Decode Time-WindowFiltering Mechanism within the Decode Processor

Referring to FIGS. 9 through 12, a third illustrative embodiment of amanually-triggered hand-supportable laser scanning bar code symbolreading system 600 will be described in detail.

As shown in FIGS. 9 and 10, the manually-triggered laser scanning barcode symbol reader 600 comprises: a hand-supportable housing 102 havinga head portion and a handle portion supporting the head portion; a lighttransmission window 103 integrated with the head portion of the housing102; a trigger switch integrated with the head portion of the housing,for generating a trigger event signal when manually actuated by thehuman operator; a laser scanning module 105, for repeatedly scanning,across the laser scanning field, a visible laser beam generated by alaser source 112A (e.g. VLD or IR LD) having optics to produce a laserscanning beam focused in the laser scanning field, in response to acontrol signal generated by a system controller 150; wherein the laserscanning module 105 also includes a laser drive circuit 151 forreceiving control signals from system controller 150, and in responsethereto, generating and delivering laser (diode) drive current signalsto the laser source 112A to produce laser scanning beam during themethod of bar code symbol reading described in FIG. 6; a start ofscan/end of scan (SOS/EOS) detector 109, for generating timing signalsindicating the start of laser beam sweep, and the end of each laser beamsweep, and sending these SOS/EOS timing signals to the system controller150; light collection optics 106 for collecting lightreflected/scattered from scanned object in the scanning field, and aphoto-detector for detecting the intensity of collected light andgenerating an analog scan data signal corresponding to said detectedlight intensity during scanning operations; an analog scan data signalprocessor/digitizer 107 for processing the analog scan data signals andconverting the processed analog scan data signals into digital scan datasignals, which are then converted into digital words representative ofthe relative width of the bars and spaces in the scanned code symbolstructure and transmitted to decode processor 108 via lines 142; a scandata signal intensity detection module 143, preferably implementedwithin scan data processor/digitizer 107, for continuously (i)processing the return analog (or digital) scan data signals, (ii)detecting and analyzing the intensity (i.e. magnitude) of the laserreturn signal, (iii) determining (e.g. estimating) the range or distanceof the scanned object, relative to the scanning window, and then (iv)transmitting the range indication (i.e. estimation) signal (e.g. in theform of a digital data value) to the decode processor 108 so that it canprogram or set an appropriate time duration for the decode time-windowfilter function employed therewithin, as described in greater detailhereinafter; a set of scan line data buffers 160 for buffering eachcomplete line of scan data collected during a complete sweep of thelaser scanning beam across the laser scanning field during each scanningcycle (e.g. two scan data line buffers for buffering data collectedduring scanning directions); programmed decode processor 108 for decodeprocessing digitized data stored in scan data buffer 160, and generatingsymbol character data representative of each bar code symbol scanned bythe visible laser scanning beam; a manually-actuatable switch 410, andassociated LED indicator light, for activating, and deactivating, thedecode time-window filtering mode of the system; an input/output (I/O)communication interface module 140 for interfacing with a hostcommunication system 154 and transmitting symbol character data theretovia wired or wireless communication links 155 that are supported by thesymbol reader and host system 154; and a system controller 150 forgenerating the necessary control signals for controlling operationswithin the hand-supportable laser scanning bar code symbol readingsystem.

As shown in FIG. 10, the laser scanning module 105 comprises a number ofsubcomponents, namely: laser scanning assembly 110 with anelectromagnetic coil 128 and rotatable or oscillating scanning element134 supporting a lightweight reflective element; a scanner coil drivecircuit 111 for generating an electrical drive signal to drive theelectromagnetic coil 128 in the laser scanning assembly 110; and a laserbeam source 112A for producing a visible laser beam 113A; and a beamdeflecting mirror 114 for deflecting the laser beam 113A from laser beamsource 112A, towards the mirror component 134A of the laser scanningassembly 110, which sweeps the laser beam 114B across the scan field andone or more bar code symbols 16 that might be simultaneously presenttherein during system operation.

As shown in FIG. 10, the laser scanning module 105 is typically mountedon an optical bench, printed circuit (PC) board or other surface wherethe laser scanning assembly is also, and includes a coil support portion110 for supporting the electromagnetic coil 128 (in the vicinity of thepermanent magnet 135) and which is driven by a scanner drive circuit 111so that it generates magnetic forces on opposite poles of the permanentmagnet 135, causing mirror component 134 to oscillate about its axis ofrotation, during scanning assembly operation. Assuming the properties ofthe permanent magnet 135 are substantially constant, as well as thedistance between the permanent magnet 135 and the electromagnetic coil128, the force exerted on the permanent magnet 135 and its associatedscanning element is a function of the electrical drive current suppliedto the electromagnetic coil 128 during scanning operations. In general,the greater the level of drive current produced by scanner drive circuit111, the greater the forces exerted on permanent magnet 135 and itsassociated scanning element, and in turn, the greater the resultant scansweep angle α(t), and thus scan line length produced by the laserscanning beam. Thus, scan sweep angle α(t) of the scanning module 105can be directly controlled by controlling the level of drive currentsupplied to the coil 128 by the scanner drive circuit 111. This will bethe preferred method of controlling the scan sweep angle α(t) and scanline length in the present disclosure.

Preferably, the intensity detection module 143 is implemented withinscan data processor/digitizer 143 which may be realized as an ASIC chip,supporting both analog and digital type circuits that carry out thefunctions and operations performed therein. As shown in FIG. 10, thedecode processor 108 includes a dynamically-programmed decodetime-window filter module 108B. The dynamically-programmable decodetime-window filter module 108B employs scan data line buffer 160 toimplement a decode time-window filter function having a continuouslyprogrammable time duration. At any instant in time, the continuouslyprogrammable time duration is determined, within decode processor 108,by the range of the scanned object determined using the range datagenerated by analog scan data processor/digitizer 107, over data path142, shown in FIG. 10.

The function of the intensity detection module 143 is manifold: (i)constantly process the return analog (or digital) scan data signals anddetecting and analyzing the intensity (i.e. magnitude) of the laserreturn signal; (ii) determine (e.g. estimate) the range or distance ofthe scanned object, relative to the scanning window, during eachmeasuring period; and (iii) transmit a range/distance indication signal(e.g. in the form of digital data value) to the decode processor 108 forsetting an appropriate time duration for the decode time-window filterfunction 108B employed therewithin. Preferably, the range or distance ofthe scanned object can be determined (e.g. estimated), relative to thescanning window, during each measuring period, by making a relativesignal-to-noise (SNR) measurement, where the lowest SNR valuecorresponds to the farthest possible scanning distance in the workingrange of the system (relative to the scanning window), and the highestSNR value corresponds to the shortest possible scanning distance in theworking range of the system. Notably, module 143 may include tablesstoring pre-calibrated scanning range vs. SNR values which can be usedin such range/distance determinations.

In general, system 600 supports an automatically-triggered mode ofoperation, and a bar code symbol reading method described below. Again,it is assumed that mode switch 410 is activated so that the decodetime-window filtering mode is enabled into operation.

In response to the generation of a trigger event signal by manualactuation of switch 104, the laser scanning module 105 generates andprojects a laser scanning beam through the light transmission window103, and across the laser scanning field 115 external to thehand-supportable housing, for scanning an object in the scanning field.The laser scanning beam is generated by the laser source 112B inresponse control signals generated by the system controller 150. Thescanning element (i.e. mechanism) 134 repeatedly scans the laser beamacross the object in the laser scanning field, at the scan sweep angleset by the controller 150 for the current scanning cycle, determined bythe process described in FIGS. 12A and 12B. Then, the light collectionoptics 106 collects light reflected/scattered from scanned code symbolson the object in the scanning field, and the photo-detector (106)automatically detects the intensity of collected light (i.e. photonicenergy) and generates an analog scan data signal corresponding to thelight intensity detected during scanning operations. The analog scandata signal processor/digitizer 107 processes the analog scan datasignals and converts the processed analog scan data signals intodigitized data signals. Also, within the analog scan data signalprocessor/digitizer 107, the intensity detection module 143 performs thefollowing functions: (i) constantly processes the return analog (ordigital) scan data signals; (ii) detects and analyzes the intensity(i.e. magnitude) of the laser return signal; (ii) determines (e.g.estimates) the range or distance of the scanned object, relative to thescanning window, during each measuring period; and (iv) transmits arange/distance indication signal (e.g. in the form of digital datavalues) to the decode processor 108 for setting an appropriate timeduration for the decode time-window filter function. The programmeddecode processor 108 decode processes digitized data signals, andgenerates symbol character data representative of each bar code symbolscanned by the laser scanning beam. The decoded bar code symbol could bea programming-type or menu-type bar code symbol, or an ordinarydata-encoded bar code symbol not intended to perform or initiate anyprogramming or special operations within the bar code symbol scanner.

As described in detail above, the dynamically-programmed decodetime-window filtering 108B operates to filter out decoded symbolcharacter data that has not been collected from within the specifieddecode time-window function. In this illustrative embodiment, the decodetime-window filtering function T_(dtw) is dynamically programmed usingthe range/distance data estimated for the scanned object, and typicallybased on a percentage (e.g. 45%) of the time duration of a single scandata line field. The duration of each scan data line field can be easilydetermined from the scan rate of the laser beam employed in the system,as described above. This parameter is stored in memory and is accessiblewithin the decode processor 108 during bar code symbol readingoperations.

In FIG. 11A a first (relatively-narrow) decode time-window functionT_(dtw) (T1, range) is dynamically-programmed and superimposed on thescan line data buffered 160 within the scan line data buffer, when thebar-coded object to be scanned is located at a first (e.g. far-field)range from the scanning window. The time duration of a first (e.g.“far-field”) decode time-window filter function, T_(dtw) (T1, range) canbe selected as a first % of the scan line field (i.e. scan line databuffer 160), centered about the center line passing through the centerof the scan line field (i.e. scan line data buffer). It is understoodthat the laser beam moving across an object in the far-field region ofthe scan field has a significantly higher speed than objects moving inthe near-field portion of the scan field. In FIG. 7A, x is chosen to beabout 25% of the scan line field, but could be selected to be larger orsmaller, depending on the application. This first decode time-windowfilter T_(dtw) (T2, range) will be selected when an object is detectedwithin the far-field (i.e. long range) portion of the laser scan field.

In FIG. 11B, a second (relatively-wide) decode time-window functionT_(dtw) (T2, range) is dynamically-programmed and superimposed on thescan line data buffered 160 within the scan line data buffer, when thebar-coded object to be scanned is located at a first (e.g. far-field)range from the scanning window. The time duration of a second (e.g.“near-field”) decode time-window filter function, T_(dtw) (T2, range)determined at time T2 can be selected as second % of the scan line field(i.e. scan line data buffer 160), centered about the center line passingthrough the center of the scan line field (i.e. scan line data buffer).

As indicated above, the time duration of the dynamically-programmeddecode time-window filter module 108B is determined by the range of thescanned object in the scan field, at any given moment in time. The rangemeasure or estimate can be determined in at least two different ways:(i) by processing collected returned laser scan signals; or (ii) usingrange data produced by an LED or IR based object detection/rangedetection mechanism. In the case of processing return laser scanningsignals, the laser light signal is converted to an electrical signalwhich is fed into the analog scan data signal processor/digitizer 107.The strength of the processed analog or digital scan data signal, or thesignal-to-noise ratio (SNR), is calculated and then used to estimate thedistance/range of a scanned bar code symbol by the processor 107 whichcan be implemented an ASIC chip. A strong signal or a high ratio usuallycorresponds to a shorter range/distance, whereas a weak signal or lowratio corresponds to a larger range/distance. The length (i.e. size) ofthe time duration of the decode time-window filter 108B can then bedynamically adjusted based on the signal strength or SNR, and apredetermined table/algorithm implemented in ASIC 107. The exemplarytable set forth above illustrates the relationship among these threeparameters, described above. The parameters can be tailored for scannershaving different working ranges.

Notably, the dynamically-defined decode time-window filter 108B can betriggered under conditions which may differ during different scanningapplications. In the third illustrative embodiment, preferably, thedecode time-window filter function is triggered (i.e. activated) totransmit to its destination (e.g. host system, onboard memory storage,or execution) decoded symbol character data (e.g. representative of anon-programming or programming-type bar code symbol) whenever at least aportion of the scan data associated with the decoded code symbol fallswithin the decode time-window filter duration T_(dtw) actively setwithin the system, at any moment or instant in time. As time duration ofthe decode time-window filter 108 is a function of object scanningrange, which can vary at any instant in time, it is understood that theduration of the dynamically-programmed decode time-window filterfunction will also change over time, and be dependent on the objectrange/distance determined by the analog scan data processor/digitizer107, as described above. This way, so long as a portion or piece of thescan data string associated with a decoded bar code symbol hastime-coordinates that fall within, for example, the time duration of thedecode time-window filter function T_(dtw) (time, range), defined, forexample, about the center of a scan line field, then the decoded symbolcharacter data (e.g. representative of a non-programming orprogramming-type bar code symbol) is transmitted to its destination(e.g. host system, onboard memory storage, or execution).

Symbol character data, corresponding to the bar codes read (i.e.decoded) by the decoder 108, is then transmitted to the host system 154via the I/O communication interface 140, which may support either awired and/or wireless communication link 155, well known in the art.During object detection and laser scanning operations, the systemcontroller 150 generates the necessary control signals for controllingoperations within the hand-supportable laser scanning bar code symbolreading system.

Referring to FIGS. 12A and 12B, the method of reading bar code symbolsand controlling operations within the laser scanning bar code reader 600will be described in greater detail.

As indicated in FIGS. 12A and 12B, the process orchestrated by systemcontroller 150 begins at the START Block, where all system componentsare activated except for the laser and scanning motor (i.e.electromagnetic coil). Then at Block B in FIGS. 12A and 12B, the systemcontroller determines if a trigger or activation event has occurred(i.e. trigger switch 104 has been manually depressed by the operator).

In the event that a trigger event has been detected at Block B, then thesystem controller proceeds to Block C1, and (i) activates the laserdiode and scanner drive circuit 111 with a sufficient current togenerate a full default scan sweep angle α_(o)(t) and (ii) then startstimeout period timer T1.

At Block C2, the analog scan data signal processor/digitizer ASIC 107processes the return analog and/or digital scan data signals, andautomatically (i) measures (e.g. estimates) the range or distancebetween the scanned object and the scanner, (ii) determines the timeduration for the decode time-window filter as a function of determinedobject range/distance, and (iii) programs the time duration for thedecode time-window filter, for the given moment of time during thecontrol process.

As indicated at Block D, the system controller commands the buffering,in a scan data buffer 160, of a complete line of scan data collected forscanning directions, over a full scan sweep angle set during the currentscanning cycle. Scan data from each scan direction is buffered in adifferent scan line data buffer.

At Block E, the system controller determines whether the decodeprocessor 108 has decoded a bar code symbol based on the line of scancollected and buffered in the scan data buffer 160.

If, at Block E, a bar code symbol has not been decoded (i.e. read)within the buffered line of scan data, then the system controllerproceeds to Block F and determines whether or not the time out period T1has been reached. If the time out period has not been reached, then thesystem controller returns to Block C2, processes the scan data signals,determines the object range and updates the time duration of the decodetime-window filter. Thereafter, the system controller proceeds to BlockD and attempts to collect and decode scan data within time period T1remaining. If the time out period has been reached, then the systemcontroller proceeds to Block G, de-activates the laser source and scanmotor, and then returns to Block B, as shown.

If at Block E, the system controller determines that a full bar code hasbeen decoded, then at Block H the system controller determines if a barcode symbol is detected within the decode time-window set at Block C2,that is, is represented by scan data collected within the decodetime-window set at Block D. If at least a portion of a decoded bar codesymbol is not detected within scan data collected within the set decodetime-window T_(dtw) set at Block C2, then at Block I the systemcontroller determines whether or not the time out period has lapsed. Ifthe time out period has lapsed, then the system controller returns toBlock B. If the time out period has not lapsed, then the systemcontroller proceeds to Block J and determines whether or not the samebar code symbol has been decoded (i.e. read) a predetermined (e.g. X=3)number of consecutive times, while located completely (or substantiallycompletely) outside the decode time-window T_(dtw), by analyzing thescan data associated with each decoded code symbol. If the same bar codesymbol has been decoded the predetermined number of times while beingcompletely outside of the outside the decode time-window T_(dtw), thenthe system controller proceeds to Block D and collects additional scandata and processes the same as indicated above. However, if the same barcode symbol has not been decoded the predetermined number of times whilebeing completely outside of the outside the decode time-window T_(dtw),then the system controller proceeds to Block K, as indicated in FIGS.12A and 12B. Block J can be easily disabled from operation by settingparameter X as a relatively large number (e.g. 500).

If at Block H the system controller determines that a bar code isdetected within the scan data collected within the decode time-windowset at Block C2, then the system controller proceeds to Block J anddecodes the bar code symbol based on the scan data within the decodetime-window, and then proceeds to Block K to determine if the decodedbar code symbol is (i) a programming-type bar code symbol (includingmenu-reading bar code symbol), or (ii) a non-programming bar codesymbol. If the decoded bar code symbol is a programming-type bar codesymbol, then at Block L, the programming-type bar code symbol isprogrammed within the system, and then returns to Block B, as shown; andif the decoded bar code symbol is a non-programming-type bar codesymbol, then at Block M, the bar code symbol character data istransmitted to the host system and then returns to Block B, as shown.

By virtue of the novel control process described in FIGS. 12A and 12B,the bar code symbol reader has the capacity to intelligently filter outbar code symbols that are scanned outside the dynamically-programmeddecode time-windows (for different ranges/distance along the scanfield), unless the option to transmit a consecutively decoded codesymbol outside the time-window has been enabled. With this optionenabled, an enhanced level of flexibility can be provided in particularscanning applications.

Some Modifications which Readily Come to Mind

While the illustrative embodiments disclosed the use of a 1D laserscanning module to detect visible and/or invisible bar code symbols onobjects, it is understood that a 2D or raster-type laser scanning modulecan be used as well, to scan 1D bar code symbols, 2D stacked linear barcode symbols, and 2D matrix code symbols, and generate scan data fordecoding processing.

While the time duration of the dynamically-programmed decode time-windowfiltering functions disclosed herein have been set as a % of the totalscan line time length, of each line of scan data stored in the scan linedata buffers of the system, it is understood that other techniques andcriteria can be used to specify the time-window filter duration, eitherstatically or dynamically, as the case may be.

Also, it is understood that a long/short range laser scanning can beprovided with programmable decode time-window filtering capabilities, asdescribed in detail above, but triggered using manually triggered switchas provided in the first illustrative embodiment, and a long/short rangemeasurement subsystem to automatically determine where in the scan fieldthe target object resides so that the optimized decode time-windowfiltering function is employed during bar code symbol decode processingoperations.

While hand-supportable laser scanning systems have been illustrated, itis understood that these laser scanning systems can be packaged in aportable or mobile data terminal (PDT) where the laser scanning enginebegins to scan in response to receiving a request to scan from the hostcomputer 154 within the PDT. Also, the laser scanning system can beintegrated into modular compact housings and mounted in fixedapplication environments, such as on counter-top surfaces, on wallsurfaces, and on transportable machines such as forklifts, where thereis a need to scan code symbols on objects (e.g. boxes) that might belocated anywhere within a large scanning range (e.g. up to 20+ feet awayfrom the scanning system). In such fixed mounted applications, thetrigger signal can be generated by manual switches located a remotelocations (e.g. within the forklift cab near the driver) or anywhere notlocated on the housing of the system.

During fix-mount applications, the left side, the right side or thecenter portion of the laser scan line can be defined as the center ofthe decode time-window filter function employed in the decode processorof the system. Also, the decode time-window filter will be triggered totransmit decode symbol character data to its destination, and intendeduse, only when at least a portion of the scan data string (in the scanline data buffer), associated with the decoded code symbol, falls withinthe decode time-window duration actively set within the system at anygiven moment of time.

Also, the illustrative embodiment have been described in connection withvarious types of code symbol reading applications involving 1-D and 2-Dbar code structures (e.g. 1D bar code symbols, 2D stacked linear barcode symbols, and 2D matrix code symbols), it is understood that thepresent invention can be used to read (i.e. recognize) anymachine-readable indicia, dataform, or graphically-encoded form ofintelligence, including, but not limited to bar code symbol structures,alphanumeric character recognition strings, handwriting, and diversedataforms currently known in the art or to be developed in the future.Hereinafter, the term “code symbol” shall be deemed to include all suchinformation carrying structures and other forms of graphically-encodedintelligence.

It is understood that the digital-imaging based bar code symbol readingsystem of the illustrative embodiments may be modified in a variety ofways which will become readily apparent to those skilled in the art ofhaving the benefit of the novel teachings disclosed herein. All suchmodifications and variations of the illustrative embodiments thereofshall be deemed to be within the scope of the Claims appended hereto.

The invention claimed is:
 1. A system for reading code symbols in ascanning field, comprising: a source for generating a light beam; ascanning mechanism for scanning the light beam across the scanningfield; a photo-detector for detecting the intensity of light reflectedfrom the scanning field and generating a signal corresponding to thedetected light intensity; and a processor for processing the signal to:determine if a portion of a signal corresponding to a code symbol iswithin a decode time window; and only decode the code symbol if aportion of the signal corresponding to the code symbol is within thedecode time window; wherein the decode time window corresponds to apercentage of a time duration of a single scan line defined about thecenter of the scan line, the left end of the scan line, or the right endof the scan line.
 2. The system of claim 1, wherein the processor isconfigured for: determining if the decoded code symbol is aprogramming-type code symbol; and if the decoded code symbol is aprogramming-type code symbol, executing a function associated with theprogramming-type code symbol.
 3. The system of claim 1, wherein theprocessor is configured for: determining if the decoded code symbol is aprogramming-type code symbol; and if the decoded code symbol is not aprogramming-type code symbol, generating and transmitting datarepresentative of the decoded code symbol.
 4. The system of claim 1,comprising memory, wherein the processor is configured for: determiningif the decoded code symbol is a programming-type code symbol; and if thedecoded code symbol is not a programming-type code symbol, generatingand storing data representative of the decoded code symbol on thememory.
 5. The system of claim 1, wherein the processor is configuredfor: determining if the decoded code symbol is a decode time windowprogramming-type code symbol; and if the decoded code symbol is a decodetime window programming-type code symbol, changing the percentage of thetime duration of the single scan line to which the decode time windowcorresponds.
 6. The system of claim 1, wherein the processor isconfigured for: determining a distance between the system and a codesymbol in the scanning field based on the signal; and changing thepercentage of the time duration of the single scan line to which thedecode time window corresponds based on the determined distance.
 7. Thesystem of claim 1, wherein the processor is configured for: if thesignal corresponding to a code symbol is not within the decode timewindow, determining whether the code symbol has been in the scanningfield for a predetermined number of scanning cycles; and if the codesymbol has been in the scanning field for a predetermined number ofscanning cycles, decoding the code symbol, generating datarepresentative of the decoded code symbol, and transmitting the data. 8.The system of claim 1, wherein the processor is configured for: if thesignal corresponding to a code symbol is not within the decode timewindow, determining whether the code symbol has been in the scanningfield for a predetermined number of scanning cycles; and if the codesymbol has been in the scanning field for a predetermined number ofscanning cycles, determining if the decoded code symbol is aprogramming-type code symbol; if the decoded code symbol is aprogramming-type code symbol, decoding the code symbol and executing afunction associated with the programming-type code symbol; and if thedecoded code symbol is not a programming-type code symbol, decoding thecode symbol, generating data representative of the decoded code symbol,and transmitting the data.
 9. A system for reading code symbols in ascanning field, comprising: a hand-held housing; a source for generatinga light beam; a scanning mechanism for scanning the light beam acrossthe scanning field; a photo-detector for detecting the intensity oflight reflected from the scanning field and generating a signalcorresponding to the detected light intensity; and a processor forprocessing the signal to: determine if a portion of a signalcorresponding to a code symbol is within a decode time window; and onlydecode the code symbol if a portion of the signal corresponding to thecode symbol is within the decode time window; wherein the decode timewindow corresponds to a percentage of a time duration of a single scanline defined about the center of the scan line.
 10. The system of claim9, wherein the processor is configured for: determining if the decodedcode symbol is a programming-type code symbol; and if the decoded codesymbol is a programming-type code symbol, executing a functionassociated with the programming-type code symbol.
 11. The system ofclaim 9, wherein the processor is configured for: determining if thedecoded code symbol is a programming-type code symbol; and if thedecoded code symbol is not a programming-type code symbol, generatingand transmitting data representative of the decoded code symbol.
 12. Thesystem of claim 9, comprising memory, wherein the processor isconfigured for: determining if the decoded code symbol is aprogramming-type code symbol; and if the decoded code symbol is not aprogramming-type code symbol, generating and storing data representativeof the decoded code symbol on the memory.
 13. The system of claim 9,wherein the processor is configured for: determining if the decoded codesymbol is a decode time window programming-type code symbol; and if thedecoded code symbol is a decode time window programming-type codesymbol, changing the percentage of the time duration of the single scanline to which the decode time window corresponds.
 14. The system ofclaim 9, comprising a range detection subsystem for determining adistance between the system and a code symbol in the scanning field;wherein the processor is configured for changing the percentage of thetime duration of the single scan line to which the decode time windowcorresponds based on the distance determined by the range detectionsubsystem.
 15. The system of claim 9, wherein the processor isconfigured for: if the signal corresponding to a code symbol is notwithin the decode time window, determining whether the code symbol hasbeen in the scanning field for a predetermined number of scanningcycles; and if the code symbol has been in the scanning field for apredetermined number of scanning cycles, decoding the code symbol,generating data representative of the decoded code symbol, andtransmitting the data.
 16. The system of claim 9, wherein the processoris configured for: if the signal corresponding to a code symbol is notwithin the decode time window, determining whether the code symbol hasbeen in the scanning field for a predetermined number of scanningcycles; and if the code symbol has been in the scanning field for apredetermined number of scanning cycles, determining if the decoded codesymbol is a programming-type code symbol; if the decoded code symbol isa programming-type code symbol, decoding the code symbol and executing afunction associated with the programming-type code symbol; and if thedecoded code symbol is not a programming-type code symbol, decoding thecode symbol, generating data representative of the decoded code symbol,and transmitting the data.
 17. A method for determining a portion of ascan line to which a decoding time window corresponds for a system forreading code symbols in a scanning field, the method comprising:determining a distance between the system and a code symbol in thescanning field; and changing the portion of the scan line to which thedecode time window corresponds based on the determined distance.
 18. Themethod of claim 17, wherein: the system comprises a photo-detector fordetecting the intensity of light reflected from the scanning field andgenerating a signal corresponding to the detected light intensity; andthe step of determining the distance comprises determining the distancebetween the system and the code symbol in the scanning field based onthe signal generated by the photo-detector.
 19. The method of claim 17,wherein: the system comprises a range detection subsystem fordetermining the distance between the system and the code symbol in thescanning field; and the step of determining the distance comprisesdetermining the distance between the system and the code symbol in thescanning field based on the output of the range detection subsystem. 20.The method of claim 17, comprising: decoding a code symbol in thescanning field using the system; determining if the decoded code symbolis a decode time window programming-type code symbol; and if the decodedcode symbol is a decode time window programming-type code symbol,changing a portion of a scan line to which the decode time windowcorresponds.